//
//  Homecellviewmdoel.swift
//  weibo1
//
//  Created by 代亚洲 on 16/4/21.
//  Copyright © 2016年 itcast. All rights reserved.
//
//  --> HomeTableViewCell 专门为 cell 服务 处理数据逻辑


import UIKit
import SDWebImage

class Homecellviewmdoel: NSObject {
    
    // 当前视图模型里面保留的模型
    var status: StarUserModel? {
        didSet{
            dealMemberImage()
            dealSourceText()
            // 设置转发微博的内容
            if let s = status?.retweeted_status {
                // @昵称:内容
                if let name = s.user?.name, content = s.text {
                    retweetText = "@\(name):\(content)"
                }
            }
            
            // 计算配图视图的大小
            retweetPictureViewSize = calcPictureSize(status?.retweeted_status?.pic_urls)
            originalPictureViewSize = calcPictureSize(status?.pic_urls)
        }
    }
    
    // 当前微博用户的会员图标
    var memberImage: UIImage?
    // 转发微博的内容
    var retweetText: String?
    // 来源字符串
    var sourceText: String?
    // 转发微博的配图视图大小
    var originalPictureViewSize: CGSize = CGSizeZero
    var retweetPictureViewSize: CGSize = CGSizeZero
    // 更新单张图片配图视图的大小
    func updateSingleImagePictureViewSize() {
        retweetPictureViewSize = calcSingleImageSize(status?.retweeted_status?.pic_urls)
        originalPictureViewSize = calcSingleImageSize(status?.pic_urls)
    }
    
    /// 计算单张图片的配图视图大小
    private func calcSingleImageSize(pic_urls: [HMStatusPhontoInfo]?) -> CGSize{
        
        // 取出图片地址
        guard let imageUrlString = pic_urls?.first?.thumbnail_pic else {
            return CGSizeZero
        }
        
        // 1. 根据图片的地址，取到已下载好的图片（从缓存里面取）
        if let image = SDWebImageManager.sharedManager().imageCache.imageFromDiskCacheForKey(imageUrlString) {
            // SDWebImage会根据当前屏幕的缩放比去对图片进行缩放。
            // 如果想要正常显示的话就把其缩放回来
            let scale = UIScreen.mainScreen().scale
            var size =  CGSize(width: image.size.width * scale, height: image.size.height * scale)
            
            // 过窄处理
            // 如果宽度小于 50 ，把其图片宽度拉伸到50，高度等比例拉伸
            
            if size.width < 50 {
                // 10  30
                // 50  150
                let height = 50 / size.width * size.height
                size.width = 50
                size.height = height > 100 ? 100 : height
            }
//            print(image)
            return size
        }
        
        // 2. 计算size并返回
        return CGSizeZero
        
    }
    
    
    /// 通过一个配图数据，去计算配图视图的大小
    ///
    /// - parameter pic_urls: 配图数组
    ///
    /// - returns: 计算结果
    private func calcPictureSize(pic_urls: [HMStatusPhontoInfo]?) -> CGSize {
        
        // 获到图片张数
        let count = pic_urls?.count ?? 0
        // 如果是0张，返回 CGSizeZero
        if count == 0 {
            return CGSizeZero
        }
        
        // 根据 count 计算大小 比如是6张图片 --> 大小？？？
        // 1. 求出几行几列
        let col = count == 4 ? 2 : (count > 3 ? 3 : count)
        // 5 --> （4 / 3）+ 1
        let row = ((count - 1) / 3) + 1
        
        //        if count == 4 {
        //            col = 2
        //        }
        
        // 2. 求出每一张图片的大小。并且设置间距大小
        // 每一个条目的高度
        let margin: CGFloat = 5
        let itemWH = (SCREENW - 2 * HMStatusCellMargin - 2 * margin) / 3
        
        // 3. 通过每一张图片的大小和列数求出宽度，行数求出高度
        let width = CGFloat(col) * itemWH + CGFloat(col - 1) * margin
        let height = CGFloat(row) * itemWH + CGFloat(row - 1) * margin
        return CGSize(width: width, height: height)
    }


    private func dealSourceText(){
        // <a href=\"http://app.weibo.com/t/feed/5B6hUc\" rel=\"nofollow\">iPhone 6s Plus</a>
        
        guard let s = status?.source else {
            return
        }
        
        //        // 开始截取位置
        //        let startIndex = s.rangeOfString("\">")?.endIndex
        //        // 结束截取位置
        //        let endIndex = s.rangeOfString("</")?.startIndex
        
        
        // 开始截取位置
        if let startIndex = s.rangeOfString("\">")?.endIndex, endIndex = s.rangeOfString("</")?.startIndex {
            let result = s.substringWithRange(startIndex..<endIndex)
            sourceText = "来自 \(result)"
        }
        
        // 求出某个子字符串在大字符串里面的位置：rangeOfString
        //        let sss = NSString(format: "asdkjfhahjk")
        //        sss.rangeOfString("s")
        
    }
    
    // 处理会员图标
    private func dealMemberImage(){
        // 会员等级是1-6
        //        guard let rank = status?.user?.mbrank else {
        //            memberImage = nil
        //            return
        //        }
        //
        //        if rank > 0 && rank < 7 {
        //            memberImage = UIImage(named: "common_icon_membership_level\(rank)")
        //        }
        
        if let rank = status?.user?.mbrank where (rank > 0 && rank < 7) {
            memberImage = UIImage(named: "common_icon_membership_level\(rank)")
        }
    }
}
